PORO : Plain Old Ruby Object
簡單的沒有任何繼承關係的純Ruby物件
可以讓Model和Controller代碼能夠更加精簡,讓一個 class 只需要負責一件事,達到 Single Responsibility Principle,還可增加彈性、容易重複使用並且容易測試。
PORO也可以實現類似model的功能,有些數據不需要儲存到數據庫,可以用PORO代替 (ex 購物車測試的Cart Model)
一些運算邏輯不屬於model範疇,例如流程控制或是牽涉到其它model,應該要切出另一個非ActiveRecord(PORO)的class來處理。
PORO為 Plain Old Ruby Object的縮寫,翻譯成:簡單的沒有任何繼承關係的純Ruby物件。
這個Cat物件沒有任何繼承關係,是一個簡單的Ruby物件:
class Cat
end
mycat = Cat.new
可以加一些方法進行讀取:
class Cat
attr_reader :name
def initialize(name)
@name = name
end
end
mycat = Cat.new('kitty')
mycat.name # 'kitty'
上面這個Cat物件就是一種PORO